package org.dromara.creditcard.domain;

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;

import java.io.Serial;
import java.util.HashMap;
import java.util.Map;

/**
 * 刷卡账单记录对象 credit_out_record
 *
 * @author Mr.Zhou
 * @date 2023-11-29
 */
@Data
@ExcelIgnoreUnannotated
@TableName("credit_out_record")
public class CreditOutRecord implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     *
     */
    @TableId(value = "id",type = IdType.AUTO)
    private Integer id;

    /**
     *  租户编号
     */
    private String tenantId;

    /**
     *  账单编号
     */
    @ExcelProperty(value = "账单编号")
    private String recordNo;

    /**
     *  区域代理id
     */
    private Integer agentId;

    /**
     * 还款月份标识id
     */
    private Integer monthRecordId;

    /**
     * 操作月份
     */
    @ExcelProperty(value = "操作月份")
    private String monthDate;

    /**
     * 卡片id
     */
    private Integer cardId;

    /**
     * 卡号
     */
    @ExcelProperty(value = "卡号")
    private String cardNum;

    /**
     * 记录类型 0 - 普通账号拆分记录 1 - 手动添加刷卡记录
     */
    private Integer recordType;


    @ExcelProperty(value = "记录类型")
    @TableField(exist = false)
    private String recordTypeTxt;

    /**
     * 绑定手机号
     */
    @ExcelProperty(value = "持卡人手机号")
    private String phoneNum;

    /**
     * 持卡人姓名
     */
    @ExcelProperty(value = "持卡人姓名")
    private String holderName;

    /**
     * 持卡人id
     */
    private Integer holderId;

    /**
     * 当前需刷金额
     */
    @ExcelProperty(value = "当前需刷金额")
    private BigDecimal billMoney;

    /**
     * 已刷卡金额
     */
    @ExcelProperty(value = "已刷卡金额")
    private BigDecimal payMoney;

    /**
     * 刷卡利率
     */
    @ExcelProperty(value = "刷卡利率")
    private BigDecimal payRate;

    /**
     * 刷卡手续费
     */
    @ExcelProperty(value = "刷卡手续费")
    private BigDecimal payFee;

    /**
     * 管理费率
     */
    private BigDecimal manageRate;

    /**
     *  本笔管理费
     */
    private BigDecimal manageFee;

    /**
     * 本笔产生的利润：
     */
    private BigDecimal profit;

    /**
     * 浮动金额：超额刷出为负值  低额刷出为正直
     */
    private BigDecimal floatAmount;

    /**
     * 是否是扫码支付
     */
    private Integer isQrPay;

    /**
     * 排序索引
     */
    private Integer sort;

    /**
     * 记录状态 0 - 待处理（wei）  1 - 本次已刷款   2 - 已超时未刷款
     */
    private Integer state;

    /**
     * 还款日
     */
    @ExcelProperty(value = "还款日")
    private Date repayDay;

    /**
     *  本账单还款日期
     */
    @ExcelProperty(value = "本账单还款日期")
    private Date billOutDay;

    /**
     * 是否高风险
     */
    private Integer isDanger;

    /**
     * 打款支付时间
     */
    @ExcelProperty(value = "打款支付时间")
    private Date payTime;

    /**
     * 操作人id
     */
    private Integer opSysUserId;

    /**
     * 备注信息
     */
    @ExcelProperty(value = "备注信息")
    private String remark;

    /**
     * 删除标识 0 - 未删除 1 - 已删除
     */
    private Integer isDel;

    /**
     * 添加时间
     */
    private Date createTime;


    /**
     *  是否同步生成进账记录
     */
    @TableField(exist = false)
    private Integer isAddInRecord;

    /**
     *  本账单还款日期
     */
    @TableField(exist = false)
    private Date billRepayDay;


    /**
     * 请求参数
     */
    @JsonInclude(JsonInclude.Include.NON_EMPTY)
    @TableField(exist = false)
    private Map<String, Object> params = new HashMap<>();


    /**
     *  出账数量
     */
    @TableField(exist = false)
    private Integer outCount;




}
